home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / boostrs.arc / PUTHEAP.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  2KB  |  75 lines

  1. ;************************************************
  2. ;       type
  3. ;           AnyString  = string[255];
  4. ;           ColumnType = 0..80;
  5. ;           RowType    = 0..25;
  6. ;
  7. ;       Procedure PutHeap(   PAGE : HeapBuf;
  8. ;                              HV : Char;
  9. ;                               S : AnyString;
  10. ;                               X : ColumnType;
  11. ;                               Y : RowType;
  12. ;                       Attribute : byte);
  13. ;************************************************
  14. PutHeap proc    near
  15.         push    bp
  16.     mov    bp,sp
  17.     push    ds
  18. ;
  19. ;*** Get Heap Address
  20. ;
  21.     mov    di,[bp+268]
  22.     mov    ax,[bp+270]
  23.     mov    es,ax
  24. ;
  25.     mov    dl,[bp+8]    ; X
  26.     dec    dl
  27.     mov    dh,[bp+6]    ; Y
  28.     dec    dh
  29. ;
  30. ;       Compute DI offset
  31. ;
  32. P002:    mov    bl,dh        ; Row (Y-1)
  33.     xor    bh,bh
  34.     mov    ax,bx
  35.     mov    cl,7
  36.     shl    ax,cl        ; (Y-1) * 128
  37.     mov    cl,5
  38.     shl    bx,cl        ; (y-1) *  32
  39.     add    bx,ax        ; (y-1) * 160
  40.     mov    al,dl        ; Column (X-1)
  41.     xor    ah,ah
  42.     shl    ax,1        ; 2 * (X-1)
  43.     add    bx,ax        ; BX = offset
  44.     add    di,bx        ; DI = offset
  45. ;
  46.     mov    cl,[bp+10]    ; length of string
  47.     xor    ch,ch
  48.     or    cx,cx        ; if length is 0,
  49.     jz    return        ; leave PutHeap
  50.     lea    si,[bp+11]    ; string offset
  51.     push    ss
  52.     pop    ds
  53.     mov    ah,[bp+4]    ; attribute byte
  54.     mov    dx,[bp+266]    ; direction (H or V)
  55.     cmp    dl,'v'
  56.     je    P003
  57.     cmp    dl,'V'
  58.     je    P003
  59.     xor    dx,dx
  60.     jmp    P003a
  61. P003:    mov    dx,158
  62. P003A:    cld
  63. ;
  64. DO    mov    al,[si] ;
  65.         stosw                    ; store on screen
  66.     add    di,dx
  67.     inc    si
  68.     loop    DO
  69. ;
  70. Return: pop    ds
  71.         mov     sp,bp
  72.         pop     bp
  73.     ret    268
  74. PutHeap endp
  75.